﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SILAS.Entidades;
using PagedList;


namespace SILAS.DAO
{
    public class JassDAO : MasterDAO, IJassDAO
    {


        public void agregarJASS(JASS Jass)
        {
            context.JASSes.Add(Jass);
            context.SaveChanges();
        }

        public void modificarJASS(JASS Jass)
        {
            var existe = context.JASSes.Find(Jass.Id);

            for (int i = 0; i < Jass.ConsejoDirectivoes.Count; i++)
            {
                ConsejoDirectivo ciudadano = null;

                if (Jass.ConsejoDirectivoes.ToList()[i] != null)
                {
                    ciudadano = existe.ConsejoDirectivoes.Where(c => c.IdCiudadano.Equals(Jass.ConsejoDirectivoes.ToList()[i].IdCiudadano)).SingleOrDefault();

                }

                if (ciudadano == null)
                {

                    var consejo = new ConsejoDirectivo() { IdCiudadano = Jass.ConsejoDirectivoes.ToList()[i].IdCiudadano };
                    existe.ConsejoDirectivoes.Add(consejo);
                }
            }

            for (int i = 0; i < existe.ConsejoDirectivoes.Count; i++)
            {
                ConsejoDirectivo ciudadano = null;
                if (existe.ConsejoDirectivoes.ToList()[i].IdCiudadano != null)
                {
                    ciudadano = Jass.ConsejoDirectivoes.Where(e => e.IdCiudadano.Equals(existe.ConsejoDirectivoes.ToList()[i].IdCiudadano)).SingleOrDefault();
                }
                if (ciudadano == null)
                {
                    var ciudExiste = existe.ConsejoDirectivoes.ToList()[i];

                    if (ciudExiste.IdCiudadano == null)
                    {
                        existe.ConsejoDirectivoes.Remove(ciudExiste);
                    }
                    else
                    {
                        existe.ConsejoDirectivoes.ToList()[i].IdCiudadano = null;
                    }
                }
            }

            context.Entry(existe).State = System.Data.EntityState.Modified;
            context.SaveChanges();

        }

        public JASS getFromJASSbyId(int id)
        {
            return context.JASSes.Find(id);

        }

        public List<JASS> ListarJassByIdsector(int id)
        {
            var query = (from p in context.Sectors
                         where p.Id.Equals(id)
                         select p).SingleOrDefault();

            return query.JASSes.ToList();
        }



        public List<JASS> GetAllFromJASS()
        {
            var query = from p in context.JASSes
                        orderby p.Id
                        select p;
            return query.Skip(0).Take(10).ToList();
        }

        public List<JASS> GetAllFromJASSByCriterio()
        {
            throw new NotImplementedException();
        }
    }
}